package cl.loso.melon.server.negocio;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import cl.loso.melon.server.model.MetaLVS;
import cl.loso.melon.server.model.UsuarioLVS;
import cl.loso.melon.server.persistencia.MetaLVSDAO;

public class MetaLVSBO {
	private static Log log = LogFactory.getLog(MetaLVSBO.class);

	public static void guardarMetaLVS(String idUsuario,int ano,int mes,String horas)
			throws Exception {
		try {

			Calendar fechacalendario = Calendar.getInstance();
			fechacalendario.set(Calendar.DAY_OF_MONTH,1);
			fechacalendario.set(Calendar.MONTH,mes);
			fechacalendario.set(Calendar.YEAR,ano);
			Date fecha=fechacalendario.getTime();
			
			UsuarioLVS usuario = UsuarioLVSBO.editarUsuarioLVS(idUsuario);
			MetaLVS meta = new MetaLVS(usuario,fecha,Float.parseFloat(horas),new Integer(mes),new Integer(ano));
			List<MetaLVS> metas = new ArrayList<MetaLVS>();
			metas.add(meta);
			usuario.setMetas(metas);

			MetaLVSDAO.insertar(usuario);
		} catch (Exception e) {
			log.error(e.getMessage());
			throw e;
		}
	}
	
	/*
	public static void guardarMetaHistoricaLVS(String idUsuario,String horas)
			throws Exception {
		try {
			UsuarioLVS usuario = UsuarioLVSBO.editarUsuarioLVS(idUsuario);
			SimpleDateFormat dateformat = new SimpleDateFormat("dd/MM/yyyy");
			Date newDate = new Date();
			String newdate = dateformat.format(newDate);
			
			MetaLVS meta = new MetaLVS("historica",usuario,Float.valueOf(horas), new Date(),newdate);
			List<MetaLVS> metas = new ArrayList<MetaLVS>();
			metas.add(meta);
			usuario.setMetas(metas);

			MetaLVSDAO.insertar(usuario);
		} catch (Exception e) {
			log.error(e.getMessage());
			throw e;
		}
	}
	*/	

	public static List<MetaLVS> obtenerMetaLVS(String idUsuario)
			throws Exception {
		try {
			return MetaLVSDAO.obtener(idUsuario);
		} catch (Exception e) {
			log.error(e.getMessage());
			throw e;
		}
	}


	public static List<MetaLVS> editarMetaLVS(String idUsuario, String anno)
			throws Exception {
		try {
			return MetaLVSDAO.obtener(Long.valueOf(idUsuario),Integer.valueOf(anno));
		} catch (Exception e) {
			log.error(e.getMessage());
			throw e;

		}
	}


	public static void actualizarMetaLVS(String idUsuario, String ano, int mes, String horas) throws Exception {
		try {
			MetaLVSDAO.actualizar(Long.valueOf(idUsuario), new Integer(ano),new Integer(mes),new Float(horas));
		} catch (Exception e) {
			log.error(e.getMessage());
			throw e;
		}
	}

	public static void borrarMetaLVS(String idUsuario, String ano)
			throws Exception {
		try {
			MetaLVSDAO.borrar(Long.valueOf(idUsuario), Integer.valueOf(ano));
		} catch (Exception e) {
			log.error(e.getMessage());
			throw e;
		}
	}

	/*
	public static boolean validaMetaUsuarioLVS(String idUsuario,
			String idNegocio, String idSitio, String idArea) throws Exception {
		boolean b = false;
		try {
			List<MetaLVS> metalst = MetaLVSDAO.getMetaLVS(Long
					.valueOf(idUsuario), Long.valueOf(idNegocio), Long
					.valueOf(idSitio), Long.valueOf(idArea));
			if (metalst != null) {
				if (!metalst.isEmpty()) {
					b = true;
					log.info("exiten metas para este usuario");
				}
			}
		} catch (Exception e) {
			log.error(e.getMessage());
			throw e;
		}
		return b;

	}	
	*/

	/*
	public static List<VisitaLVS> reporteMetaDetalleUsuarioLVS(String fechaini,
			String fechater, String idUsuario, String idNegocio,
			String idSitio, String idArea) throws Exception {
		List<VisitaLVS> visitas = null;
		try {

			DateFormat formato = new SimpleDateFormat("dd/MM/yyyy");
			Date fecha_ini = (Date) formato.parse(fechaini);
			Date fecha_ter = (Date) formato.parse(fechater);

			Map<String, Object> pars = new HashMap<String, Object>();
			String query = "fecha >= :fechaini && fecha <= :fechater";

			pars.put("fechaini", fecha_ini);
			pars.put("fechater", fecha_ter);

			if (idUsuario != null && idUsuario.length() > 0) {
				UsuarioLVS usr = UsuarioLVSDAO.getUsuarioLVSbyId(Long
						.valueOf(idUsuario));
				query += " && usuario == :usr";
				pars.put("usr", usr);
			}

			if (!idNegocio.equals("0")) {
				query += " && idNegocio == negocio";
				pars.put("negocio", Long.valueOf(idNegocio));
			}
			if (!idSitio.equals("0")) {
				query += " && idSitio == :sitio";
				pars.put("sitio", Long.valueOf(idSitio));
			}
			if (!idArea.equals("0")) {
				query += " && idArea== :area";
				pars.put("area", Long.valueOf(idArea));
			}
			log.info("query:" + query);

			visitas = VisitaLVSDAO.ReporteMetas(pars, query);

		} catch (Exception e) {
			log.error("reporteMetaDetalleUsuarioLVS: " + e.getMessage());
			throw e;
		}
		return visitas;
	}

	public static List<VisitaLVS> reporteMetaConsolidadoUsuarioLVS(
			String fechaini, String fechater, String idUsuario)
			throws Exception {
		List<VisitaLVS> visitas = null;
		try {

			DateFormat formato = new SimpleDateFormat("dd/MM/yyyy");
			Date fecha_ini = (Date) formato.parse(fechaini);
			Date fecha_ter = (Date) formato.parse(fechater);

			Map<String, Object> pars = new HashMap<String, Object>();
			String query = "fecha >= :fechaini && fecha <= :fechater";

			pars.put("fechaini", fecha_ini);
			pars.put("fechater", fecha_ter);

			if (idUsuario != null && idUsuario.length() > 0) {
				UsuarioLVS usr = UsuarioLVSDAO.getUsuarioLVSbyId(Long
						.valueOf(idUsuario));
				query += " && usuario == :usr";
				pars.put("usr", usr);
			}
			log.info("query:" + query);
			visitas = VisitaLVSDAO.ReporteMetas(pars, query);
		} catch (Exception e) {
			log.error("reporteMetaConsolidadoUsuarioLVS:" + e.getMessage());
			throw e;
		}
		return visitas;
	}

	public static List<VisitaLVS> reporteMetaConsolidadoNegocioLVS(
			String fechaini, String fechater) throws Exception {
		List<VisitaLVS> visitas = null;
		try {

			DateFormat formato = new SimpleDateFormat("dd/MM/yyyy");
			Date fecha_ini = (Date) formato.parse(fechaini);
			Date fecha_ter = (Date) formato.parse(fechater);

			Map<String, Object> pars = new HashMap<String, Object>();
			String query = "fecha >= :fechaini && fecha <= :fechater";

			pars.put("fechaini", fecha_ini);
			pars.put("fechater", fecha_ter);
			log.info("query:" + query);
			visitas = VisitaLVSDAO.ReporteMetas(pars, query);

		} catch (Exception e) {
			log.error("reporteMetaConsolidadoNegocioLVS:" + e.getMessage());
			throw e;
		}
		return visitas;
	}
*/


}
